﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

//11.声明变量，就是可以使用这个变量；声明不会分配内存空间；
extern int a;
//7.全局变量，作用在整个项目中。使用的前提是，需要在使用的文件中进行声明；
//int a = 100;
void func01(int a, int b, int c)
{
	//6.函数创建变量，是从上到下创建的，在栈区创建；c-->b-->a

	//int b = a;
	printf("2.在同一级别内，形式参数变量c最先创建，地址为：%p\n", &c);//004FFA68
	printf("3.然后是变量b创建，地址为：%p\n", &b);//004FFA64
	printf("4.最后是变量a创建，地址为：%p\n", &a);//004FFA60

	//5.为了调试；
	//getchar();

	a += 10;
	printf("9.输出func01函数形参a的值：%d\n", a);//20-->1010
}

//main100：全局和局部变量作用域
int main100()
{
	printf("8.函数还没有定义变量a，此时输出全局变量a：%d\n", a);//100 --> 200

	//1.变量的作用范围：从创建到所在函数的结束；
	int a = 10;
	printf("=================================================================\n");

	int* p;
	//16.没有名字的，程序体，代码体，函数体；
	{
		printf("14.输出局部变量a的值：%d\n", a);//10
		a = 1000;
		printf("15.局部变量a被重新赋值后，输出a：%d\n", a);//1000
		p = &a;
	}
	printf("17.测试局部变量a在程序体的生命周期，此时*p为：%d\n", *p);//1000

	int i = 100;
	for (int i = 0; i < 10; i++)
	{
		printf("18.输出for循环内部的变量i的值：%d\n", i);//0,1,2...9
	}
	printf("19.输出for循环外部的相同变量i的值：%d\n", i);//100


	func01(a, a, a);
	printf("10.输出局部变量a的值：%d\n", a);//10-->1000

	system("pause");
	return EXIT_SUCCESS;
}
//13.如果全局变量写在主函数下面，想使用的话，需要声明；
//int a = 300;